package com.xygz.orm;

import com.xygz.orm.enums.CondJoin;
import com.xygz.orm.exception.ORMException;
import com.xygz.orm.internal.query.WhereItem;

/**
 * condition 组
 *
 * @author xiyuan-lgz 2023-11-30 @version v1.0.0 新建与整理
 */
public abstract class Wrapper<E, C extends ConditionWrapper<E, C>, W extends Wrapper<E, C, W>> extends ConditionWrapper<E, W> implements WhereItem {
    
    
    protected Wrapper(Class<E> rawType) throws ORMException {
        super(rawType);
    }
    
    protected Wrapper(E en) throws ORMException {
        super(en);
    }
    
    /**
     * 设置包裹类型
     *
     * @param type 类型
     * @return 当前对象
     */
    public abstract C setWrapperType(CondJoin type);
    
    /**
     * 结束条件组
     *
     * @return 返回条件构建器
     */
    public abstract C end();
}
